<?php
// +---------------------------------------------------------------------+
// | OneBase    | [ WE CAN DO IT JUST THINK ]                            |
// +---------------------------------------------------------------------+
// | Licensed   | http://www.apache.org/licenses/LICENSE-2.0 )           |
// +---------------------------------------------------------------------+
// | Author     | Bigotry <3162875@qq.com>                               |
// +---------------------------------------------------------------------+
// | Repository | https://gitee.com/Bigotry/OneBase                      |
// +---------------------------------------------------------------------+

namespace app\common\model;


/**
 * OtcTrading模型
 */
class OtcOrder extends ModelBase
{

    protected $insert = ['create_time','serial_number','user_ip','rand'];

    /**
     * 流水号自动完成
     */
    public function setSerialNumberAttr($value)
    {

        return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8).rand(10000,99999);
    }

    /**
     * 连用户表
     */
    public function member(){
        return $this->belongsTo('Member','user_id','id');
    }


    /**
     * 连用户表
     */
    public function  user(){
        return $this->belongsTo('Member','uid','id');
    }
    /**
     * 连用户表
     */
    public function  contractorder(){
        return $this->belongsTo('OtcOrder','order_id','id');
    }

    /**
     * 连用户表
     */
    public function  contractorder1(){
        return $this->hasOne('OtcOrder','order_id','id');
    }

    /**
     * 连OTC交易表
     */
    public function trade(){
        return $this->belongsTo('OtcTrading','otc_id','id');
    }
    /**
     * 连OTC店铺表
     */
    public function shop(){
        return $this->belongsTo('OtcShop','shop_id','id');
    }

    /**
     * 连提现表
     */
    public function transfer(){
        return $this->belongsTo('Transfer','withdrwal_id','id');
    }
    /**
     * 连支付方式表
     */
    public function getUserpayAttr(){

        if($this->pay_json){
            $arr=json_decode($this->pay_json,true);
            return $arr;
        }
        return [];
    }
    /**
     * 连申诉表
     */
    public function getFeedbackAttr(){
        return OtcFeedback::where(['order_id'=>$this->id])->order('id desc')->find();
    }


     /**
     * 获取状态信息
     */
    public function getStateTextAttr(){
        $arr=['','等待买家付款','已完成','等待店铺放行','买家已取消','已失效','申诉中','付款超时','放行超时','申诉成功-买家已打款','申诉成功-店铺已放行','申诉成功-买家未打款','申诉成功-买家二次打款','申诉成功-店铺打款超时,转移重新匹配订单'];
        return lang($arr[$this->state]);
    }

    /**
     * 获取状态信息
     */
    public function getPayTextAttr(){
        $arr=['','支付宝','微信','银行卡'];
        return lang($arr[$this->pay_type]);
    }

    /**
     * 获取是否付款超时
     */
    public function getIsExpirePayAttr(){
        if($this->pay_time>$this->pay_expire_time || $this->state==7){
            return '是';
        }
        return '否';

    }

    /**
     * 获取是否收款超时
     */
    public function getIsExpireReceiveAttr(){
        if($this->receive_time>$this->receive_expire_time || $this->state==8 ){
            return '是';
        }
        return '否';

    }


    /**
     * IP自动完成
     */
    public function setUserIpAttr()
    {

        return get_client_ip();
    }
        /**
         * 付款参考号
         */
        public function setRandAttr()
        {

            return rand(100000,999999);
        }


    /**
     * 时间自动完成
     */
    public function setCreateTimeAttr()
    {

        return TIME_NOW;
    }

    /**
     * 时间自动完成
     */
    public function getCreateTimeAttr($value)
    {

        return date('Y-m-d H:i:s',$value);
    }


    /**
     * 时间自动完成
     */
    public function getPayTimeAttr($value)
    {
        if($value){
            return date('Y-m-d H:i:s',$value);
        }else{
            return '';
        }

    }

    /**
     * 时间自动完成
     */
    public function getPayExpireTimeAttr($value)
    {
        if($value){
            return date('Y-m-d H:i:s',$value);
        }else{
            return '';
        }

    }

    /**
     * 时间自动完成
     */
    public function getReceiveExpireTimeAttr($value)
    {
        if($value){
            return date('Y-m-d H:i:s',$value);
        }else{
            return '';
        }

    }

    /**
     * 时间自动完成
     */
    public function getReceiveTimeAttr($value)
    {
        if($value){
            return date('Y-m-d H:i:s',$value);
        }else{
            return '';
        }

    }

    public function getImageAttr(){
        if($this->cover_id){
            return get_picture_url($this->cover_id,false);
        }else{
            return '';
        }

    }

    /**
     * 连支付方式表
     */
    public function wallet(){
        return $this->belongsTo('Wallet','wallet_id','id');
    }


    /**
     * 获取成交率
     */
    public function  getCompletionRateAttr(){
        return ceil($this->success_count/$this->total_count*100);
    }


}
